# -*- coding: utf-8 -*-
class BaseConfig:
    # 最大句子长度
    max_seq_len = 100

    # 最大标签长度
    max_label_len = 2

    prompt = "这是一条{MASK}评论：{textA}。"


class TrainConfig(BaseConfig):
    def __init__(self):
        # 词典路径：在vocab文件夹里面
        self.tokenizer_path = r"D:\models\bert-base-chinese"

        # 训练文件路径
        self.train_path = "data/train.txt"

        # 验证数据文件路径
        self.valid_path = "data/dev.txt"

        # 模型配置文件
        self.model_config = ""

        # 模型保存路径
        self.save_model_path = "save_model"

        # 预训练模型路径
        self.pretrained_model = r"D:\models\bert-base-chinese"

        # 训练轮次
        self.epochs = 100

        # 训练批次
        self.batch_size = 60

        self.weight_decay = 0

        # 优化器 学习率 梯度下降
        self.learning_rate = 2.6e-5
        # 优化器 为了增加数值计算的稳定性而加到分母里的项，其为了防止在实现中除以零
        self.eps = 1.0e-09

        self.warmup_ratio = 0.06

        # 多少步汇报一次loss
        self.loss_print_step = 1

        # 训练几步保存一次模型
        self.save_model_steps = 40


class InferenceConfig(BaseConfig):
    def __init__(self):
        # 词典路径：在vocab文件夹里面
        self.tokenizer_path = 'save_model/model_best_pet'

        # 使用模型路径
        self.used_model_path = 'save_model/model_best_pet'


if __name__ == '__main__':
    pc = TrainConfig()
    print(pc.train_path)
